I. Wzorce kreacyjne
1. Singleton
2. Budowniczy
3. Prototyp
4. Fabryka
5. Fabryka abstrakcyjna
II. Wzorce strukturalne
1. Adapter
2. Most
3. Kompozyt
4. Dekorator
5. Fasada
6. Pyłek
7. Pełnomocnik
III. Wzorce czynnościowe
1. Łańcuch zobowiązań
2. Polecenie
3. Interpreter
4. Iterator
5. Mediator
6. Pamiątka
7. Obserwator
8. Stan
9. Strategia
10. Metoda szablonowa
11. Odwiedzający

Polecenie (komenda, ang. Command) - wzorzec projektowy (design pattern) - java

1. Cel:
Wzorzec Polecenie (komenda, ang. Command) umożliwia hermetyzację każdego żądania jako obiektu.
Każde żądanie wywołania jest teraz zorientowane obiektowo.
Nadawca (sender) jest oddzielony od procesora.
2. Problem:
Chcemy stworzyć obsługę żądania per polecenie lub żądanie.
Klasa ma mówić "co" ma być robione.
Chcemy użyć hermetyzacji dla każdego polacenia (dla każdej akcji).

3. Rozwiązanie:
Używamy klasy ConcrateCommand (polecenia) implementującej interface Command (polecenie)
które wykonuje metodę wykonawcy (Receiver-a).
Każde wywołanie jest per żądanie.

4. Diagram klas wzorca Polecenie (komenda, ang. Command):


5. Implementacja:
Klasa testująca:
  1. public class CommandTest {
  2.  
  3. public static void main(String[] args) {
  4. //Receiver
  5. Light light = new Light();
  6.  
  7. // Concrete Command, wywołuje Receiver
  8. Command command = new ToggleCommand(light);
  9.  
  10. // Invoker,
  11. Switch lightSwitch = new Switch();
  12. lightSwitch.storeAndExecute(command);
  13. lightSwitch.storeAndExecute(command);
  14. lightSwitch.storeAndExecute(command);
  15. lightSwitch.storeAndExecute(command);
  16. }
  17. }
implementacja wzorca polecenia:
  1. /**
  2.  * Command (polecenie)
  3.  */
  4. public interface Command {
  5. void execute();
  6. }
  7.  
  8.  
  9. /**
  10.  * Concrete Command
  11.  */
  12. public class ToggleCommand implements Command{
  13.  
  14. private Light light;
  15.  
  16. public ToggleCommand(Light light) {
  17. this.light = light;
  18. }
  19.  
  20. @Override
  21. public void execute() {
  22. light.toggle();
  23. }
  24. }
  25.  
  26.  
  27. /**
  28.  * Receiver (odbiorca)
  29.  */
  30. public class Light {
  31.  
  32. private boolean isOn = false;
  33.  
  34. public boolean isOn(){
  35. return isOn;
  36. }
  37.  
  38. /**
  39.   * akcja
  40.   */
  41. public void toggle(){
  42. if(isOn){
  43. off();
  44. isOn = false;
  45. }else{
  46. on();
  47. isOn = true;
  48. }
  49. }
  50.  
  51. private void on(){
  52. System.out.println("light switched on");
  53. }
  54.  
  55. private void off(){
  56. System.out.println("light switched off");
  57. }
  58. }
  59.  
  60. /**
  61.  * Invoker
  62.  */
  63. public class Switch {
  64. public void storeAndExecute(Command command) {
  65. command.execute();
  66. }
  67. }
6. Zastosowanie w kodzie java:
- java.lang.Runnable interface.
- Swing Action (javax.swing.Action) - używają wzorca polecenie.
created by cv.java.org.pl © 2023 All Rights Reserved.